home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
cpp_libs
/
answrbok
/
5_5.lha
/
5_5
/
5_5b2.c
< prev
next >
Wrap
Text File
|
1993-08-08
|
922b
|
51 lines
* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */
* The C++ Answer Book */
* Tony Hansen */
* All rights reserved. */
/ Evaluate the given expression tree
tatic int treeval(tree* head)
if (head)
switch (head->type)
{
case PLUS:
return treeval(head->left) +
treeval(head->right);
case MINUS:
if (head->right)
return treeval(head->left) -
treeval(head->right);
else
return -treeval(head->left);
case DIV:
int l = treeval(head->left);
int r = treeval(head->right);
if (r != 0)
return l / r;
else
return error("division by 0");
case MUL:
return treeval(head->left) *
treeval(head->right);
case NUMBER:
return head->value;
case LP:
return treeval(head->left);
case RP:
case END:
default:
error("invalid type within tree");
break;
}
else
error("NULL node found");
return 0;